<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 等价于  let arr ;arr = ['a','b','c']

        // 当执行arr = ['a','b','c'] 系统会在堆区开辟一块空间(0X111) 顺序的将数组中每一个元素值保存到堆区存储  然后在arr变量栈区存储堆区的地址
        let arr = ['a','b','c'];
        // 创建tmp变量 并且记录内存地址  赋值永远是将栈区的值拷贝 最终tmp栈区存储的是0X111地址
        let tmp = arr;
        // 问题1
        // 根据栈区存储的内存地址0x111 找到堆区的第一个数据 修改值为d
        // tmp[0] = 'd';
        // console.log(arr);
        // 问题2
        // 堆区开辟内存空间将[2,3,4] 存储起来  然后在tmp栈区记录堆区的地址 最终导致tmp变量与arr变量完全分离
        tmp = [2,3,4];
        console.log(arr);
        
    </script>
</body>
</html>